//fixme 授权中间件处理 middleware: 对每一次 socket 连接的建立/断开、 每一次消息/数据传递进行预处理
module.exports = () => {
  console.log('进入io/mid/auth中间件')
  return async (ctx, next) => {
    //fixme ctx.socket.handshake;
    const { query } = ctx.socket.handshake;
    //todo ctx.logger.info
    ctx.logger.info('connect: ', query);

    switch (query.scene) {
      case 'cs':
        // notice这里的异步需要注意
        ctx.service.cs.connect(ctx.socket);
        break;
      case 'rescue':
        ctx.service.rescue.connect(ctx.socket);
        break;
      default:
        break;
    }
    await next();
    ctx.logger.info('disconnect: ', query);
    switch (query.scene) {
      case 'cs':
        ctx.service.cs.disconnect(ctx.socket);
        break;
      case 'rescue':
        ctx.service.rescue.disconnect(ctx.socket);
        break;
      default:
        break;
    }
  };
};
